package main

import (
	"fmt"
	"strconv"
	"time"
)

func main() {

	//下面的执行结果是不确定的
	//虽然容量是2，但是可能放一个 再读一个
	//也可能是放2个 读2个
	//或放2个 读1 再放1个之类的。。。
	ch := make(chan int, 0)
	go func() {
		for i := 0; i < 10; i++ {
			fmt.Println("####迭代：" + strconv.Itoa(i))
			select {
			case ch <- i:
				fmt.Printf("存入%v\n", i)
			case x := <-ch:
				fmt.Printf("获取%v\n", x)
			}
			fmt.Println("迭代：" + strconv.Itoa(i) + "结束")
		}
	}()

	for {
		time.Sleep(1000)
	}
}
